home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Disc to the Future 2
/
Disc to the Future Part II Programmer's Reference (Wayzata Technology)(6013)(1992).bin
/
MAC
/
THINKC
/
5
/
DINKDEMO
/
DINKCLAS
/
DLISTSTU.C
< prev
next >
Wrap
Text File
|
1992-07-08
|
2KB
|
135 lines
/*
File: DListStuff.c
Written by: Mark Gross
Copyright: ⌐ 1992 by Applied Technical Software, all rights reserved.
Use at your own risk.
*/
#include "DListStuff.h"
DLink* DLink::Init(DLink *n, void *item)
{
if (n)
fNext = n;
else
fNext = NULL;
fItem = item;
return this;
}// end of constuctor
DLink* DLink::GetNext(void)
{
return fNext;
}
void* DLink::GetItem(void)
{
return fItem;
}
void DLink::SetNext(DLink* aLink)
{
fNext = aLink;
}
void DLink::SetItem(void* anItem)
{
fItem = anItem;
}
// end of DLink class definition
DList* DList::Init(void)
{
fLink = NULL;
fNumItems = 0;
return this;
}// end of constuctor
void DList::AddItem(void* item)
{
fLink = (new DLink)->Init(fLink, item);
fNumItems++;
}// end of function AddItem
Boolean DList::ItemInList(void* item)
{
DLink *temp, *last;
last = NULL;
for(temp = fLink; temp!=NULL; temp = temp->GetNext() )
{ if(temp->GetItem() == item)
return true;
else
last = temp;
}
return false;
}
Boolean DList::RemoveItem(void* item)
{
DLink *temp, *last;
last = NULL;
for(temp = fLink; temp!=NULL; temp = temp->GetNext() )
{ if(temp->GetItem() == item)
{
if(last==NULL)
fLink = temp->GetNext();
else
last->SetNext(temp->GetNext());
delete temp;
fNumItems--;
return true; //item found and removed
}
else
last = temp;
}
return false;
}// end of function RemoveItem
int DList::NumItems(void)
{
return fNumItems;
}
DIterator* DIterator::Init(DList* list)
{
fCurLink = list->fLink;
return this;
}// end of constructor
void* DIterator::GetCurrentThenIncrement(void)
{
DLink* link = fCurLink;
if(fCurLink)
{
fCurLink = fCurLink->GetNext();
return (link->GetItem() );
}
else
return NULL;
}// end of function Next